home *** CD-ROM | disk | FTP | other *** search
/ Mac Mania 6 / MacMania 6.toast / / Multimedia & Desktop / VideoToolbox / VideoToolboxSources / SetCrsrState.c < prev    next >
Text File  |  1997-05-30  |  2KB  |  64 lines

  1. /*
  2. SetCrsrState.c
  3.  
  4. Macintosh develop Q&A in the June 1997 issue of MacTech documents some low memory globals
  5. relevant to hiding/showing the cursor. The note gives the usual disclaimer saying
  6. these globals might go away in the future.
  7.  
  8. Apparently CrsrVis is Boolean, 1 when the cursor is visible and 0 when it's hidden.
  9. As I read their example, setting CrsrVis to zero fools CopyBits into thinking the cursor is
  10. hidden, but doesn't actually hide it. Their example also decrements CrsrState.
  11.  
  12. Apparently CrsrState is a negative integer. 0 means cursor is visible. It's
  13. decremented by 1 by each call to HideCursor and incremented by ShowCursor. Apple's
  14. routines will never increase it beyond 0. I don't understand why the Q&A note says CrsrState 
  15. is a "word", but the code examples only access a byte. I followed the code and access
  16. it as a byte.
  17.  
  18. REFERENCE:
  19. ftp://ftp.mactech.com/mactech/src/13.06/
  20. http://devworld.apple.com/dev/qa/qd/qd45.html
  21. http://devworld.apple.com/dev/qa/ops/ops13.html
  22.  
  23. HISTORY:
  24. 5/30/97 dgp wrote it, based on Q&A code.
  25. */
  26. #if 0
  27. enum {
  28.     CrsrRect = 0x83C,   /*[GLOBAL VAR]  Cursor hit rectangle [8 bytes]*/
  29.     TheCrsr  = 0x844,   /*[GLOBAL VAR]  Cursor data, mask & hotspot [68 bytes]*/
  30.     CrsrAddr = 0x888,   /*[GLOBAL VAR]  Address of data under cursor [long]*/
  31.     CrsrSave = 0x88C,   /*[GLOBAL VAR]  data under the cursor [64 bytes]*/
  32.     CrsrVis  = 0x8CC,   /*[GLOBAL VAR]  Cursor visible? [byte]*/
  33.     CrsrBusy = 0x8CD,   /*[GLOBAL VAR]  Cursor locked out? [byte]*/
  34.     CrsrNew  = 0x8CE,   /*[GLOBAL VAR]  Cursor changed? [byte]*/
  35.     CrsrState = 0x8D0,  /*[GLOBAL VAR]  Cursor nesting level [word]*/
  36.     CrsrObscure = 0x8D2 /*[GLOBAL VAR]  Cursor obscure semaphore [byte]*/
  37.   };
  38. #endif
  39.  
  40. #include <VideoToolbox.h>
  41.  
  42. #define CrsrVis *(unsigned char *)0x8CC        // Cursor visible?
  43. #define CrsrState *(unsigned char *)0x8d0    // Cursor hiding level
  44.  
  45. void SetCrsrVis(unsigned char cursorVisible)
  46. {
  47.     CrsrVis=cursorVisible;
  48. }
  49.  
  50. unsigned char GetCrsrVis(void)
  51. {
  52.     return CrsrVis;
  53. }
  54.  
  55. short GetCrsrState(void)
  56. {
  57.     return CrsrState;
  58. }
  59.  
  60. void SetCrsrState(short val)
  61. {
  62.     CrsrState=val;
  63. }
  64.